#pragma once

#include <string>
#include <functional>
#include "AuthManager.h"
#include "MenuHandler.h"
#include "StudentManager.h"
#include "FileHandler.h"

class SystemController
{
private:
    AuthManager authManager;       // 用户认证管理
    MenuHandler menuHandler;       // 菜单处理
    StudentManager studentManager; // 学生信息管理
    FileHandler fileHandler;       // 文件处理

    // 当前登录用户名
    std::string currentUsername;
    // 当前用户角色
    std::string currentUserRole;

    // 初始化系统
    void initializeSystem();
    // 加载用户数据
    bool loadUserData();
    // 保存用户数据
    bool saveUserData();
    // 加载学生数据
    bool loadStudentData();
    // 保存学生数据
    bool saveStudentData();

public:
    // 构造函数
    SystemController();
    // 运行系统
    void run();
    // 用户登录
    bool login();
    // 用户注册
    bool registerUser();
    // 显示主菜单
    void showMainMenu();
    // 显示用户菜单
    void showUserMenu();
    // 显示管理员菜单
    void showAdminMenu();
    // 查询学生信息
    void searchStudent();
    // 显示所有学生信息
    void displayAllStudents();
    // 添加学生信息（管理员）
    void addStudent();
    // 删除学生信息（管理员）
    void deleteStudent();
    // 修改学生信息（管理员）
    void updateStudent();
    // 保存学生信息到文件（管理员）
    void saveStudentsToFile();
    // 退出系统
    void exitSystem();
};
